home *** CD-ROM | disk | FTP | other *** search
- #Authors: Boris Lavva && ????
- # Etud of evening party ready.
- #
-
- if ( machine == msdos, resolution = 5, resolution = 10 );
-
- # Wine glasses.
- cross = cbspline( 3,
- list( ctlpt( E3, 0.000000, 0.0, 0.562000 ),
- ctlpt( E3, 0.038000, 0.0, 0.602000 ),
- ctlpt( E3, 0.394000, 0.0, 0.800000 ),
- ctlpt( E3, 0.436000, 0.0, 0.884000 ),
- ctlpt( E3, 0.406353, 0.0, 1.494430 ),
- ctlpt( E3, 0.310000, 0.0, 1.908000 ),
- ctlpt( E3, 0.322518, 0.0, 1.978670 ),
- ctlpt( E3, 0.320509, 0.0, 1.979365 ),
- ctlpt( E3, 0.446353, 0.0, 1.474430 ),
- ctlpt( E3, 0.486925, 0.0, 0.869266 ),
- ctlpt( E3, 0.350267, 0.0, 0.739114 ),
- ctlpt( E3, 0.165326, 0.0, 0.620766 ),
- ctlpt( E3, 0.092403, 0.0, 0.543362 ),
- ctlpt( E3, 0.085417, 0.0, 0.169610 ),
- ctlpt( E3, 0.085989, 0.0, 0.125466 ),
- ctlpt( E3, 0.452000, 0.0, 0.000000 ),
- ctlpt( E3, 0.307708, 0.0, 0.030000 ),
- ctlpt( E3, 0.100000, 0.0, 0.0900000 ),
- ctlpt( E3, 0.000000, 0.0, 0.088000 ) ),
- list( KV_OPEN ) );
-
-
- wglass = surfrev( cross * scale( vector( 0.2, 0.2, 0.2 ) ) );
- color( wglass, white );
- attrib( wglass, "reflect", 0.2 );
- attrib( wglass, "transp", 0.95 );
- attrib( wglass, "index", 1.4 );
- wglass1 = wglass * trans( vector( 0.6, 0.0, 0.0) );
- wglass2 = wglass * trans( vector( 0.0, 0.6, 0.0) );
- wglass3 = wglass * trans( vector( -0.6, 0.0, 0.0) );
- wglass4 = wglass * trans( vector( 0.0, -0.6, 0.0) );
-
-
- #wine bottle
-
- cross = cbspline( 3,
- list(
- ctlpt( E3, 0.032000, 0.000000, 1.088000 ),
- ctlpt( E3, 0.036000, 0.000000, 0.976000 ),
- ctlpt( E3, 0.040000, 0.000000, 0.872000 ),
- ctlpt( E3, 0.056000, 0.000000, 0.762000 ),
- ctlpt( E3, 0.172000, 0.000000, 0.652000 ),
- ctlpt( E3, 0.226000, 0.000000, 0.556000 ),
- ctlpt( E3, 0.210000, 0.000000, 0.420000 ),
- ctlpt( E3, 0.180000, 0.000000, 0.276000 ),
- ctlpt( E3, 0.168000, 0.000000, 0.220000 ),
- ctlpt( E3, 0.168000, 0.000000, 0.176000 ),
- ctlpt( E3, 0.192000, 0.000000, 0.080000 ),
- ctlpt( E3, 0.200000, 0.000000, 0.044000 ),
- ctlpt( E3, 0.192000, 0.000000, 0.012000 ),
- ctlpt( E3, 0.150000, 0.000000, 0.001000 ),
- ctlpt( E3, 0.120000, 0.000000, 0.000000 ),
- ctlpt( E3, 0.076000, 0.000000, 0.001000 ),
- ctlpt( E3, 0.032000, 0.000000, 0.007000 ),
- ctlpt( E3, 0.002000, 0.000000, 0.009000 ),
- ctlpt( E3, 0.001000, 0.000000, 0.010000 ),
-
- ctlpt( E3, 0.001000, 0.000000, 0.048000 ),
- ctlpt( E3, 0.002000, 0.000000, 0.047000 ),
- ctlpt( E3, 0.010000, 0.000000, 0.046000 ),
- ctlpt( E3, 0.036000, 0.000000, 0.041000 ),
- ctlpt( E3, 0.080000, 0.000000, 0.040000 ),
- ctlpt( E3, 0.110000, 0.000000, 0.041000 ),
- ctlpt( E3, 0.152000, 0.000000, 0.042000 ),
- ctlpt( E3, 0.160000, 0.000000, 0.064000 ),
- ctlpt( E3, 0.152000, 0.000000, 0.080000 ),
- ctlpt( E3, 0.128000, 0.000000, 0.176000 ),
- ctlpt( E3, 0.128000, 0.000000, 0.220000 ),
- ctlpt( E3, 0.140000, 0.000000, 0.276000 ),
- ctlpt( E3, 0.170000, 0.000000, 0.420000 ),
- ctlpt( E3, 0.186000, 0.000000, 0.556000 ),
- ctlpt( E3, 0.132000, 0.000000, 0.652000 ),
- ctlpt( E3, 0.036000, 0.000000, 0.762000 ),
- ctlpt( E3, 0.020000, 0.000000, 0.872000 ),
- ctlpt( E3, 0.016000, 0.000000, 0.976000 ),
- ctlpt( E3, 0.013000, 0.000000, 1.085000 ),
- ctlpt( E3, 0.012000, 0.000000, 1.087000 ),
- ctlpt( E3, 0.032000, 0.000000, 1.088000 ) ),
- list( KV_OPEN ) );
-
- wbottle = surfrev( cross );
- color( wbottle, green);
- attrib( wbottle, "reflect", 0.2 );
- attrib( wbottle, "transp", 0.45 );
- attrib( wbottle, "index", 1.5 );
-
- cross = torus(
- vector( 0.0, 0.0, 0.872 ),
- vector( 0.0, 0.0, 1.0 ),
- 0.04,
- 0.01 );
- wedge = cross;
- color( wedge, green);
- attrib( wedge, "reflect", 0.2 );
- attrib( wedge, "transp", 0.45 );
- attrib( wedge, "index", 1.5 );
-
- # bottle cover
-
- cross = ctlpt( E3, 0.000, 0.0, 1.1 ) +
- ctlpt( E3, 0.040, 0.0, 1.1 ) +
- ctlpt( E3, 0.040, 0.0, 1.0 ) +
- ctlpt( E3, 0.036, 0.0, 1.0 ) +
- ctlpt( E3, 0.036, 0.0, 1.096 ) +
- ctlpt( E3, 0.000, 0.0, 1.096 );
-
- wcover = surfrev( cross );
- color( wcover, cyan );
- attrib( wcover, "reflect", 0.5 );
- attrib( wcover, "transp", 0.01 );
- attrib( wcover, "index", 1.8 );
-
- # hand out plate
-
- cross = cbspline( 3,
- list(
- ctlpt( E3, 0.988000, 0.000000, 0.060000 ),
- ctlpt( E3, 0.988000, 0.000000, 0.060000 ),
- ctlpt( E3, 0.900000, 0.000000, 0.060000 ),
- ctlpt( E3, 0.916000, 0.000000, 0.000000 ),
- ctlpt( E3, 0.812000, 0.000000, 0.000000 ),
- ctlpt( E3, 0.000000, 0.000000, 0.000000 ) ),
- list( KV_OPEN ) );
- cross2 = cross * trans( vector( 0.0, 0.0, 0.03) );
- wplate = surfrev(
- ( -cross + ctlpt( E3, 0.988, 0.0, 0.08 ) + cross2 ) *
- trans( vector( 0.0, 0.0, -0.03 ) ) *
- scale( vector( 0.8, 0.8, 0.8 ) ) );
-
-
- color( wplate, yellow );
- attrib( wplate, "reflect", 0.8 );
- attrib( wplate, "transp", 0.01 );
- attrib( wplate, "index", 1.9 );
-
-
- wglasses = list(
- wbottle,
- wcover,
- wedge,
- wplate,
- wglass1,
- wglass2,
- wglass3,
- wglass4 );
-
- #
- # View it all and dump it.
- #
- #
- # Go to single buffer since this one is slow.
- #
- #viewstate( "DblBuffer" );
-
- interact( wglasses );
- view( list( view_mat ), on );
- save( "wglasses", wglasses );
-
-